package network.messages;

/**
 * classe parent pour tous les messages. Cette classe est abstraite
 * 
 * @author Antoine Gassot
 */
public abstract class AbstractMessage {
	protected boolean broadcast = false; 
	
    public AbstractMessage() {
    }

    /**
     * Retourne le flag "broadcast"
     * 
     * @return Le flag
     */
    public boolean getBroadcast() {
    	return this.broadcast;
    }
    
    /**
     * Affecte le flag "broadcast". Indique au serveur que le message doit
     * être transmis à tous les clients.
     * 
     * @param value La nouvelle valeur pour le flag
     */
    public void setBroadcast(boolean value) {
    	this.broadcast = value;
    }
    
    /**
     * Serialise le contenu du message en une chaîne de caractère prête à être
     * envoyée
     * 
     * @return La dite chaîne de caractère
     */
    public abstract String getContenu();

    /**
     * Assigne le contenu depuis une chaîne vide
     * 
     * @param string
     */
    public abstract void setContenu(String string);

    /**
     * Pour le débuggage
     */
    public String toString() {
        return this.getClass().getName() + (this.broadcast ? " (broadcast)" : "") + ": " + this.getContenu();
    }
}
